package com.jielin.handling.mapper.policeplatform;

import com.jielin.handling.entity.alarmlog.AlarmLog;
import com.jielin.handling.entity.criminalcase.CriminalCase;
import com.jielin.handling.entity.police.Cases;
import com.jielin.handling.entity.police.ReceiveDeal;
import com.jielin.handling.entity.policeplatform.*;
import com.jielin.handling.entity.unit.OrganizationVo;
import com.jielin.handling.entity.unit.UnitInfo;
import com.jielin.handling.entity.unit.UnitVo;

import com.jielin.handling.entity.vo.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author chenzhang
 */
public interface PolicePlatformMapper {
    List<String> selectUnicode();//查询所有单位编号

    String findMaxRKSJ(String unitCode);//获取某单位的案件最大入库时间

    String findMaxTime(String unitCode);//获取某单位接处警的最大入库时间

    int verifyCaseExist(String caseCode);//验证案件是否已插入

    int verifyReceiveDealExist(String alarmCode);//验证此接处警是否已经插入到数据库中

    void insertReceiveDeal(@Param("receiveDeals") List<ReceiveDeal> receiveDeals);//批量插入接处警所有信息

    //插入获取到的此单位的案件信息
    void insertCasesMessage(@Param("cases") List<Cases> cases);

    //将此案件涉案人员插入数据库中
    void insertSuspect(@Param("suspects") List<SuspectVos> suspects);

    //根据单位编号查询此单位接处警数量
    List<Map> findCaseAccepptHandle(@Param("array") String[] array);

    List<DateMount> findCaseStatusNum(String[] unitCodes);

    List<DateVo> findCaseCountByUnitCode(@Param("unitCodeS") List<String> unitCode);// 根据单位编号查询近三年每月的案件数量

    List<DateVo> findBeforeYearsCase(@Param("array") String[] array);  //查询前年内各类案件的数量信息

    List<DateVo> findLastYearsCase(@Param("array") String[] array);  //查询去年内各类案件的数量信息

    List<DateVo> findThisYearsCaseNew(@Param("array") String[] array);  //查询今年各类案件的数量信息
    List<DateVo> findThisYearsCase();  //查询今年各类案件的数量信息

    List<EndCaseVo> findBeforeYearsEndCase(@Param("array") String[] array);//查询近三年审核完成案件数

    List<EndCaseVo> findLastYearsEndCase(@Param("array") String[] array);//查询近两年年审核完成案件数

    List<EndCaseVo> findThisYearsEndCase(@Param("array") String[] array);//查询近一年审核完成案件数

    UnitVo findPassCaseCountByUnitCode(@Param("status") String status, @Param("unitCode") String unitCode);// 根据单位编号查询审核完成案件数

    List<DateMount> findToDayNum(String[] unitCodes);

    List<DateMount> getProportion(String[] unitCodes);

    List<DateMount> selectRoomInUse(String[] unitCodes);

    //超时人数统计
    DateMount selectOvertimeMan(String[] unitCodes);

    //等待审讯人数统计
    List<DateMount> selectAwaitingTrial(String[] unitCodes);

    List<DateMount> caseStatistics(String[] unitCodes);

    CabinetVo findMaterialCountByUnitCode(String unitCode);// 根据单位编号查询卷宗材料出入柜状态

    DateMount selectManAndWoMan(@Param("array") String[] unitCodes);

    CabinetVo findLibraryStatusInfo(@Param("unitCode") String unitCode, @Param("libraryStatus") String libraryStatus);// 根据单位编号与卷宗状态统计数量

    List<WarningVo> selectAllEquipmentWarning(WarningVo warningVo);//查询所有设备告警提醒

    List<WarningVo> selectAllAuditWarning(WarningVo warningVo);//查询所有卷宗超期告警提醒

    List<WarningVo> selectAllCabinetWarning(WarningVo warningVo);//查询所有案管柜告警提醒

    List<WarningVo> selectAllRecorderWarning(WarningVo warningVo);//查询记录仪告警提醒

    List<WarningVo> selectAllWriterWarning(WarningVo warningVo);//查询刻录机告警提醒

    List<WarningVo> selectAllScanisterWarning(WarningVo warningVo);//查询扫描仪告警提醒

    List<Organization> selectStatistics(UnitInfo unitInfo);//监督中心案件类型统计

    List<Organization> selectCaseSort(@Param("array") String[] array);//根据案件类型查询案件分类

    Organization selectStatisticsSort(UnitInfo unitInfo);//监督中心案件类型统计分类

    List<Organization> selectCriminalCaseSort(UnitInfo unitInfo);//监督中心案件细类别统计分类

    String selectSortName(String type);//查询案件细类别名称

    int selectCriminalCaseAllNum(UnitInfo unitInfo);//案件细类别案件数量

    int selectAllCaseNum(UnitInfo unitInfo);//查询所有案件的数量

    int selectCountByType(UnitInfo unitInfo);//获取每种细类别的数量

    int selectCriminalNum();//刑事案件种类个数

    int insertEquipmentAlarmLog(WarningVo EquipmentVo);//摄像头告警提醒的添加

    int insertAuditAlarmLog(WarningVo auditVo);//卷宗告警提醒的添加

    int insertRrecorderAlarmLog(WarningVo auditVo);//添加记录仪告警提醒

    String findMaxEquipmentTime(String unitCode);//查询单位下设备告警最大入库时间

    String findMaxauditTime(String unitCode);//查询卷宗告警最大入库时间

    String findMaxCabinetTime(String unitCode);//查询案管柜最大时间

    String findMaxRecorder(String unitCode);//查询记录仪最大入库时间

    String findMaxwriterTime(String unitCode);//查询刻录机最大入库时间

    String findMaxscanisterTime(String unitCode);//查询扫描仪最大入库时间

    String findMaxAuditTime(String unitCode);

    List<AlarmLog> selectAllByUnitcode(WarningVo warningVo);//查询所有单位告警提醒

    int updateWarning(String id);//更新告警提醒是否已读

    List<AlarmLog> selectAll(@Param("array") String[] unicodes, @Param("status") String status, @Param("startDate") String startDate, @Param("endDate") String endDate);//监督中心查询所有单位所有告警提醒

    String findSuspectIdByUnitCodes(String[] unitCodes);//  根据单位编号查询所有的嫌疑人id

    CabinetVo findMaterialCountBySuspectIds(String suspectIds);// 根据嫌疑人id逗号分隔查询最新的卷宗信息且状态为未撤回

    List<Examination> grtTranscriptExamination(@Param("unitCode") String unitCode, @Param("date") String date, @Param("registTime") String registTime);//获取笔录考核数量

    List<String> grtExaminationCase(@Param("unitCode") String unitCode, @Param("date") String date, @Param("registTime") String registTime);//获取每月有效案件名称

    List<String> getUploadTranscriptsCase(@Param("unitCode") String unitCode, @Param("date") String date, @Param("registTime") String registTime);//获取每月已经上传笔录的案件

    int selectAcceptCase(@Param("unitCode") String unitCode, @Param("date") String date, @Param("registTime") String registTime);//查询该月受理案件个数

    int selectEffectiveCase(@Param("unitCode") String unitCode, @Param("date") String date, @Param("registTime") String registTime);//求有效案件个数

    List<String> selectPersonnelInformationAssessment(@Param("unitCode") String unitCode, @Param("date") String date, @Param("registTime") String registTime);//案件涉案人员信息登记考核

    List<String> selectStatePersonnel(@Param("unitCode") String unitCode, @Param("date") String date, @Param("registTime") String registTime);//查询国家人员信息的案件编号

    void insertExamineRatio(Examination examination);//考核比例的新增

    List<Examination> selectExaminationStatistics(Examination examination);//执法考核统计

    List<Examination> selectExaminationRandom(Examination examination);//随机执法考核统计

    void updateExaminationRandom(Examination examination);//更新最近查询的时间

    String getRegistTime(String code);//通过单位编号获取该单位下最大入库时间

    List<String> getMon();////获取月份集合

    int selectExist(Map map);//验证此考核记录是否已插入

    String getParentUnitName(String code);//获取父单位名称

    String orgExist(String code);//查此单位编号是否已经插入

    /**
     * 添加单位信息
     *
     * @param org
     */
    int insertOrg(OrganizationVo org);

    /**
     * 查询视频类型统计
     *
     * @param "array"
     */
    List<Map<String, Object>> selectVideoByUnitCode(@Param("array") String[] array);

    List<Map<String, Object>> selectCaseTypeSum(@Param("array") String[] array);

    List<Map<String, Object>> findPassCaseByUnitCode(@Param("array") String[] array);//新版查询完结案件数量排名

    List<Map<String, Object>> selectFileTransferSum(@Param("array") String[] array);

    List<Map<String, Object>> selectMapCaseSum();//查询地图数据案件总数统计

    List<Map<String, Object>> selectStatementCaseSum();//查询案情信息統計

    List<String> getExistInChms();//求两个数据库的交际

    RecordInfo selectRecordInfoById(String str);//根据录音的音频唯一标识查询所有

    void insetRecordInfo(RecordInfo recordInfo);//将数据存入到我们自己的数据库

    List<RecordInfo> selectRecordInfol(RecordInfo recordInfo);//三合一平台查询案件下的录音成功

    void updateRecordInfo(String id);//改变音频数据为已关联

    int selectForJJDB_110(@Param("array") String[] array);//求110报警总数

    int selectForJJDB_119(@Param("array") String[] array);//求119报警总数

    int selectForJJDB_122(@Param("array") String[] array);//求122报警总数

    int selectFor_CJDB(@Param("array") String[] array);//处警事件总数

    int selectLastMonth(@Param("array") String[] array);//查询上个月的事件总数

    int selectThisMonth(@Param("array") String[] array);//查询本月的事件总数

    int selectPoliceSituationCountByCode(String handleUnitCode);
    void addPoliceSituation(PoliceSituationMiddle policeSituationMiddle);

    CallPoliceProportion selectEffectivePolice(@Param("array") String[] array);//查询有效警情总数和上个月和本月的数据

    int selectEffectivePolice1_110(@Param("array") String[] array);
    int selectEffectivePolice1_119(@Param("array") String[] array);
    int selectEffectivePolice1_122(@Param("array") String[] array);

    int selectEffectivePolice2_110(@Param("array") String[] array);//查询上个月数据
    int selectEffectivePolice2_119(@Param("array") String[] array);
    int selectEffectivePolice2_122(@Param("array") String[] array);

    int selectEffectivePolice3_110(@Param("array") String[] array);//查询上上个月数据
    int selectEffectivePolice3_119(@Param("array") String[] array);
    int selectEffectivePolice3_122(@Param("array") String[] array);

    CallPoliceProportion selectReceiveThePolice(@Param("array") String[] array);//查询接警事件

    int selectReceiveThePolice1_110(@Param("array") String[] array);//查询今年有效警情总数
    int selectReceiveThePolice1_119(@Param("array") String[] array);
    int selectReceiveThePolice1_122(@Param("array") String[] array);

    int selectReceiveThePolice2_110(@Param("array") String[] array);
    int selectReceiveThePolice2_119(@Param("array") String[] array);
    int selectReceiveThePolice2_122(@Param("array") String[] array);

    int selectReceiveThePolice3_110(@Param("array") String[] array);
    int selectReceiveThePolice3_119(@Param("array") String[] array);
    int selectReceiveThePolice3_122(@Param("array") String[] array);

    CallPoliceProportion selectInvalidThePolice(@Param("array") String[] array);//查询无效警情

    int selectInvalidThePolice1_110(@Param("array") String[] array);//查询今年无效警情
    int selectInvalidThePolice1_119(@Param("array") String[] array);
    int selectInvalidThePolice1_122(@Param("array") String[] array);

    int selectInvalidThePolice2_110(@Param("array") String[] array);
    int selectInvalidThePolice2_119(@Param("array") String[] array);
    int selectInvalidThePolice2_122(@Param("array") String[] array);

    int selectInvalidThePolice3_110(@Param("array") String[] array);
    int selectInvalidThePolice3_119(@Param("array") String[] array);
    int selectInvalidThePolice3_122(@Param("array") String[] array);

    CallPoliceProportion selectBigPolice(@Param("array") String[] array);//查询重大警情

    int selectBigPolice1_110(@Param("array") String[] array);
    int selectBigPolice1_119(@Param("array") String[] array);
    int selectBigPolice1_122(@Param("array") String[] array);

    int selectBigPolice2_110(@Param("array") String[] array);
    int selectBigPolice2_119(@Param("array") String[] array);
    int selectBigPolice2_122(@Param("array") String[] array);

    int selectBigPolice3_110(@Param("array") String[] array);
    int selectBigPolice3_119(@Param("array") String[] array);
    int selectBigPolice3_122(@Param("array") String[] array);

    CallPoliceProportion selectOutPolice(@Param("array") String[] array);//涉外警情

    int selectOutPolice1_110(@Param("array") String[] array);
    int selectOutPolice1_119(@Param("array") String[] array);
    int selectOutPolice1_122(@Param("array") String[] array);

    int selectOutPolice2_110(@Param("array") String[] array);
    int selectOutPolice2_119(@Param("array") String[] array);
    int selectOutPolice2_122(@Param("array") String[] array);

    int selectOutPolice3_110(@Param("array") String[] array);
    int selectOutPolice3_119(@Param("array") String[] array);
    int selectOutPolice3_122(@Param("array") String[] array);

    List<CallPoliceProportion> selectPoliceDetails(CallPoliceProportion cp);//监督中心警情统计二级页面详情列表

    int selectFor_CJDBByUnitCode(String unitCode);//通过单位编号查询处警事件总数

    int selectFor_receivedCase(String unitCode);//通过单位编号查询接警的总数

    Map selectOrgName(String unitCode);//通过单位编号查询单位名称

    List<PoliceSituationVo> selectPoliceSituationByUnicode(PoliceSituationVo vo);//监督中心警情统计二级页面根据单位编号查询警情详情列表

    CriminalCase selectCriminalCase(String[] array);//查询监督中心刑事案件排名成功

    int selectMapCaseSums(@Param("unitCodes") List<String> unitCodes);//根据单位编号查询所有的案件数量

    List<Organization> selectSortType();//查询所有细类别的名称和类型编号

    //查询近三年审核完成案件数
    List<EndCaseVo> findBeforeYearsEndCase1();
    //查询近二年审核完成案件数
    List<EndCaseVo> findLastYearsEndCase1();
    //查询近一年审核完成案件数
    List<EndCaseVo> findThisYearsEndCase1();
    //查询恩施州案件总数
    List<Map<String, Object>> selectStatisticsESZ();
    //根据单位编号查询单位及子单位所有案件统计
    List<Map<String, Object>> selectStatisticsBxs(UnitInfo unitInfo);
    //查询八大县市下的所有案件统计
    List<Map<String, Object>> selectStatisticsBxsAll();

    int selectOnlinePoliceCount();
}
